
module.exports = {
	data() {
		return {
			systemInfo: {},
			// __addLoginListen: false // 当前页面是否开启登录监听
		}
	},
	methods: {
		__authIntercept(options = {}, auth = {}) {
			let status = true;
			// 剔除login 本身页面
			const outRules = /(\/login\/password)/; // 规则之外的页面路由
			try{
				if (!outRules.test(options.url)) {
					// 校验是否登录
					if ((auth.login || auth.isVol) && !this.store_token) {
						status = false;
						console.log(`您未登录，跳转页面失败`)
						// this.__addLoginListen = true;
						// // 移除监听
						// uni.$off('page-redirect');
						// // events事件不建议使用(如需编译小程序  有版本问题)  如有页面事件监听需求  请用uni.$emit uni.$on
						// // 监听登录是否成功 执行拦截之前跳转操作
						// uni.$on('page-redirect', () => {
						// 	console.log('登录成功，跳转拦截之前跳转页面')
						// 	// 移除监听
						// 	uni.$off('page-redirect');
						// 	this.__addLoginListen = false;
						// 	callback();
						// })
						uni.navigateTo({
							url: `/pages/main/login/password`
						})
					// 校验是否志愿者	
					} else if (auth.isVol && !this.store_is_vol) {
						status = false;
						// 唤起去认证志愿者
						uni.$emit('show-auth-vol');
					}
				}
			}catch(e){
				status = true;
			}
			
			// if (status) {
			// 	callback();
			// };
			return status;
		},
		/**
		 * 移除"登录后自动跳转拦截之前逻辑"处理后 此方法无需强制使用
		 * 跳转登录  项目中直接跳转登录必须使用当前方式跳转！！！
		 * @params {String} openType 页面跳转方式  默认navigateTo
		 */
		navigateToLogin(openType = 'navigateTo') {
			// uni.$off('page-redirect'); // 跳转登录之前移除整个程序中登录监听事件  避免重复执行
			uni?.[openType]?.({
				url: `/pages/main/login/password`
			});
		},
		/**
		 * 页面跳转控制
		 * @params {Object} options 页面跳转正常传值
		 * @params {Object} auth 验权 是否登录等（根据以后业务添加）
		 */
		navigateTo(options = {}, auth = {}) {
			if(this.__authIntercept(options, auth)){
				// 正常跳转
				uni.navigateTo(options);
			}
		},
		/**
		 *  同上
		 */
		redirectTo(options = {}, auth = {}) {
			if(this.__authIntercept(options, auth)){
				// 正常跳转
				uni.redirectTo(options);
			}
		},
		// 获取系统信息
		setSystemInfo() {
			uni.getSystemInfo({
				success: info => {
					this.systemInfo = info
				}
			})
		}
	},
	onReady() {
		this.setSystemInfo()
	},
	// onUnload() {
	// 	// 销毁登录监听
	// 	this.__addLoginListen && uni.$off('page-redirect');
	// },
	// beforeDestroy() {
	// 	// 销毁登录监听
	// 	this.__addLoginListen && uni.$off('page-redirect');
	// }
}